package tests;

import static org.junit.Assert.*;
import junit.framework.AssertionFailedError;
import junit.framework.TestCase;

import oo.Input;
import oo.Maquina;
import oo.Output;
import oo.Robot;
import oo.Sistema;

import org.junit.Test;



	public class Sistema_TEST extends TestCase{
		Robot r1 = new Robot(1);
		Robot r2 = new Robot(2);
		Robot r3 = new Robot(3);
		
		Input i1 = new Input(1,10);
		Input i2 = new Input(2,2);
		Input i3 = new Input(3,3);
		
		Maquina m1 = new Maquina(1);
		Maquina m2 = new Maquina(2);
		Maquina m3 = new Maquina(3);
		Maquina m4 = new Maquina(4);
		
		Output o1 = new Output(1,11);
		Output o2 = new Output(2,18);
		Output o3 = new Output(3,15);
		
		Sistema observador = new Sistema (r1,r2,r3,i1,i2,i3,m1, m2, m3,m4,o1,o2,o3);
		
	@Test
	public void test() {
				
		if(observador.getEstadoIntput(1)&&observador.getEstadoMaquina(1)&&observador.getEstadoRobot(1)){			
			r1.cargar(i1,m1);	
					
			if(observador.getEstadoIntput(1)&&observador.getEstadoMaquina(1)&&observador.getEstadoRobot(1)){
								r1.cargar(i1,m1);

			}
			m1.procesarlugar1();
			if(observador.getEstadoMaquina(1)&&observador.getEstadoMaquina(2)&&observador.getEstadoRobot(2)){
							r2.trasladar(m1, m2, 1);
							m2.procesarlugar1();
									if(observador.getEstadoMaquina(2)&&observador.getEstadoOutput(1)&&observador.getEstadoRobot(2)){
												r2.descargar(o1, m2, 1);
									}
							  }
	    				}
		assertEquals(8, i1.getPiezas());
		assertEquals(12, o1.getPiezas());

	  			}	
	
	@Test
	public void test2(){
		if(observador.getEstadoIntput(1)&&observador.getEstadoMaquina(1)&&observador.getEstadoRobot(1)){			
			r1.cargar(i1,m1);
			if(observador.getEstadoIntput(1)&&observador.getEstadoMaquina(1)&&observador.getEstadoRobot(1)){
				r1.cargar(i1,m1);
				if(observador.getEstadoIntput(1)&&observador.getEstadoMaquina(1)&&observador.getEstadoRobot(1)){
					r1.cargar(i1,m1);
					if(observador.getEstadoIntput(1)&&observador.getEstadoMaquina(1)&&observador.getEstadoRobot(1)){
						r1.cargar(i1,m1);
						}
					}
				}
			}
			assertEquals(8, i1.getPiezas());
		}
	}



